package com.torresquintero.oncologos.entidades;

import static javax.persistence.FetchType.LAZY;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

/**
 * Entity implementation class for Entity: IPS
 *
 */
@Entity
@NamedQueries({
	@NamedQuery(name=IPS.FIND_IPS_BY_CODIGO,query="select ips from IPS ips where ips.codigo=:"+IPS.PARAMETRO_CODIGO),
	@NamedQuery(name=IPS.FIND_ALL,query="select ips from IPS ips")
})
public class IPS implements Serializable {
	
	/**
	 * Constante para la named Query de buscar todas las IPS.
	 */
	public static final String FIND_ALL="IPS.findAll";
	
	/**
	 * Constante para la named Query de buscar IPS por codigo.
	 */
	public static final String FIND_IPS_BY_CODIGO = "IPS.findIPSByCodigo";
	
	/**
	 *Constante para el parametro para buscar por codigo.
	 */
	public static final String PARAMETRO_CODIGO="codigo";
	
	
	/**
	 * Constante de serializacion
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * Codigo del medico dentro de la IPS
	 */
	@Basic(optional = false)
	@Column(unique=true)
	private String codigo; 
	/**
	 * LLave primaria del medico.
	 */
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	/**
	 * Nombre del medico.
	 */
	@Basic(optional = false)
	private String nombre;
	/**
	 * medicos de esta IPS
	 */
	@OneToMany(fetch = LAZY, mappedBy = "ips")
	private List<Medico> medicos;
	
	/**
	 * Cosntructor sin parametros.
	 */
	public IPS() {
		super();
	}

	/**
	 * @param codigo
	 * @param id	 
	 * * @param nombre
	 */
	public IPS(String codigo, Long id, String nombre) {
		super();
		this.codigo = codigo;
		this.id = id;
		this.nombre = nombre;
	}

	/**
	 * @return the codigo
	 */
	public String getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo the codigo to set
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the medicos
	 */
	public List<Medico> getMedicos() {
		return medicos;
	}

	/**
	 * @param medicos the medicos to set
	 */
	public void setMedicos(List<Medico> medicos) {
		this.medicos = medicos;
	}   
	
   public String toString(){
	   return nombre;
   }
}
